<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Stict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Promise</title>
	<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
	<!-- <script src='./js/generator.js'></script> -->
</head>

<body>
    <a href="../">../</a>
    then方法定义在Promise.prototype上，作用是为Promise的实例添加状态改变时的回调函数。
    参数：接收两个参数（ resolved状态的回调函数、rejected状态的回调函数（可选））。
    返回值：一个新的Promise实例，可链式调用。
	<script>

        function geta(){
            return axios.get('https://api.github.com/userss');
        }
        function request(num=3){
          num--
            return new Promise((resolve,reject)=>{

                geta().then(//这里只写一个就行了，两个的话catch就没用了
                    (res) => {
                        console.log('请求成功');
                        resolve(res);//修改状态为resolved
                    },
                    (err) => {
                        if(num > 0){
                            
                            console.log('请求失败',num)
                            setTimeout(
                                function(){

                                   return request(num);
                                }
                                ,1000);
                        }else {
                            console.log('请求多次失败')
                            reject(err);//修改状态为rejected
                        }
                        
                        
                    }
                )
            })
        }
        request().then(
            res=>{
                console.log(1,res)
            },
            err=>{
                console.log(2,err)
            }
        )
		
	</script>
</body>

</html>